package com.lhj.xxsc.cart.service;

import com.lhj.xxsc.cart.vo.CartItemVo;
import com.lhj.xxsc.cart.vo.CartVo;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @author 罗惠江
 * @version 1.0
 * @email 1511619294@qq.com
 * @date 2020/12/30 14:00
 */
public interface CartService {
	/**
	 * 添加商品到购物车
	 *
	 * @param skuId
	 * @param num
	 * @return
	 */
	CartItemVo addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

	/**
	 * 获取购物车中的某个购物项
	 *
	 * @param skuId
	 * @return
	 */
	CartItemVo getCartItem(Long skuId);

	/**
	 * 获取整个购物车
	 *
	 * @return
	 */
	CartVo getCart() throws ExecutionException, InterruptedException;


	/**
	 * 删除所有购物车
	 *
	 * @param cartKey
	 */
	void clearCart(String cartKey);

	/**
	 * 选中与未选中
	 *
	 * @param skuId
	 * @param check
	 */
	void checkItem(Long skuId, Integer check);

	/**
	 * 修改购物数量
	 *
	 * @param skuId
	 * @param num
	 */
	void changeItemCount(Long skuId, Integer num);

	/**
	 * 删除购物项
	 *
	 * @param skuId
	 */
	void deleteItem(Long skuId);

	/**
	 * 获取选择的购物项
	 *
	 * @return
	 */
	List<CartItemVo> getUserCartItems();
}
